#ifndef STRINGTOIDMATCHER_H_
#define STRINGTOIDMATCHER_H_

#ifndef NULL
#define NULL 0
#endif

#include "util/Matcher.h"
#include <string>
/*
 * Matcher que utiliza el metodo getId() para comparar un elemento con un id.
 */
template<class I> class StringToIdMatcher: public Matcher<I> {
public:

	/*
	 * Constructor. Recibe el id que se va a comparar.
	 */
	StringToIdMatcher(std::string id) {
		this->setCurrentId(id);
	}

	/*
	 * Destructor.
	 */
	virtual ~StringToIdMatcher() {
	}

	/*
	 * Metodo para comparar. Devuelve true en caso que el id del elemento
	 * a comparar sea igual al id seteado anteriormente.
	 */
	virtual bool matches(I dataToCompare) {
		return ((dataToCompare != NULL) && (this->searchedId
				== dataToCompare->getId()));
	}

	/*
	 * Setter del id para comparar. Devuelve al matcher.
	 */
	virtual StringToIdMatcher* setCurrentId(std::string id) {
		this->searchedId = id;
		return this;
	}

private:
	std::string searchedId;
};

#endif /* BYIDMATCHER_H_ */
